Skip to content

Goalng http包相关

在使用Golang的过程中,需要发起请求,现在在这里写一些示例,以便以后写程序

简单的发起请求就不写了,一般直接使用 http 包里面的 get ,Postform 就可以实现

需要修改Header,传入参数的情况

注意,如果传入的参数的格式为json,需要修改req.Header.Set("Content-Type", "application/json"),并且将传入的数据改为json,可以使用字符串进行传入,不过需要对字符串转换为io.Reader对象,再进行传入

go
package main

import (
	"fmt"
	"io"
	"io/ioutil"
	"net/http"
	"net/url"
	"strings"
)

func main() {
	urlSting := "www.baidu.com"
	//这里的client,req,resp都是指针对象,因为在执行的时候需要使用指针,也可以使用&
	client := &http.Client{}
	var req *http.Request
	var resp *http.Response
	var err error
	var body []byte
	//声明需要传入的参数这里的参数表示的是 http://xxx.xxx/search?id=1&name=fsl,是指的在?后面传入的参数,可以通过Add进行添加,前面一个参数是key,后面一个参数是value
	parameters := url.Values{}
	parameters.Add("id","1")
	parameters.Add("name","fsl")
	//在这里使用http.NewRequest创建一个request,在这里并没有执行,在这里我并没有进行错误处理,应该需要错误处理
	req, _ = http.NewRequest("POST", urlSting, strings.NewReader(parameters.Encode()))
	//在获得到request后,我们可以对这个request的header进行设置
	req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
	req.Header.Set("User-Agent", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)")
	req.Header.Set("Connection", "Keep-Alive")
	//在设置完成request后,我们可以使用之前的client.Do来执行这个请求
	resp, err = client.Do(req)
	//这样我们就完成了一次请求,想要进行之后的操作,只需要对这个resp进行操作进行
	body, err = ioutil.ReadAll(resp.Body)
	if err != nil {
		fmt.Println(err)
	}
		
}

还有需要进行传入jar的情况,之后遇到了再写

golang进行多协程下载大文件

go